package com.itany.corejava.code08_常用类.泛型;



/**
 * @author 石小俊
 * 2024年07月23日 14:54
 */
public class Test04_泛型特性 {
    public static void main(String[] args) {
        Product<Integer, String, Double> product = new Product();
        product.show(1, "admin", 3.14);
    }
}

class Product<T, V, K> {

    public void show(T t, V v, K k) {
        System.out.println(t);
        System.out.println(v);
        System.out.println(k);
    }

    /**
     * 此时方法返回值的泛型必须是B或者B的子孙类
     * @return
     */
    public User<? extends B> test01() {
        return new User<B>();
        //return new User<C>();
        //return new User<D>();
    }

    /**
     * 此时方法返回值的泛型必须是C或者C的祖宗类
     * @return
     */
    public User<? super C> test02() {
        //return new User<C>();
        //return new User<D>();
        //return new User<B>();
        return new User<A>();
    }
}

class A {

}

class B extends A {

}

class C extends B {

}

class D extends A {

}
